{
table = alloc_amd_iommu_pgtable();
if ( table == NULL )
+ {
+ printk("AMD-Vi: Cannot allocate I/O page table\n");
return 0;
+ }
next_table_maddr = page_to_maddr(table);
amd_iommu_set_page_directory_entry(
(u32 *)pde, next_table_maddr, level - 1);
{
spin_unlock(&hd->mapping_lock);
amd_iov_error("Invalid IO pagetable entry gfn = %lx\n", gfn);
+ domain_crash(d);
return -EFAULT;
}
set_iommu_l1e_present(iommu_l2e, gfn, (u64)mfn << PAGE_SHIFT, iw, ir);
{
spin_unlock(&hd->mapping_lock);
amd_iov_error("Invalid IO pagetable entry gfn = %lx\n", gfn);
+ domain_crash(d);
return -EFAULT;
}
spin_unlock(&hd->mapping_lock);
amd_iov_error("Invalid IO pagetable entry phys_addr = %lx\n",
phys_addr);
+ domain_crash(domain);
return -EFAULT;
}
spin_unlock(&d->page_alloc_lock);
spin_unlock(&hd->mapping_lock);
amd_iov_error("Invalid IO pagetable entry gfn = %lx\n", gfn);
+ domain_crash(d);
return -EFAULT;
}
void *vaddr;
pg = alloc_domheap_page(NULL, 0);
+ if ( pg == NULL )
+ return 0;
vaddr = map_domain_page(page_to_mfn(pg));
- if ( !vaddr )
+ if ( vaddr == NULL )
return 0;
memset(vaddr, 0, PAGE_SIZE);
unmap_domain_page(vaddr);